<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Computer multitasking</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Computer_multitasking"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Computer_multitasking rootpage-Computer_multitasking skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Computer multitasking</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p>In <a href="Computing" title="Computing">computing</a>, <b>multitasking</b> is the <a href="Concurrent_computing" title="Concurrent computing">concurrent</a> execution of multiple tasks (also known as <a href="Process_(computing)" title="Process (computing)">processes</a>) over a certain period of time. New tasks can interrupt already started ones before they finish, instead of waiting for them to end. As a result, a computer executes segments of multiple tasks in an interleaved manner, while the tasks share common processing resources such as <a href="Central_processing_unit" title="Central processing unit">central processing units</a> (CPUs) and <a href="Main_memory" class="mw-redirect" title="Main memory">main memory</a>. Multitasking automatically interrupts the running program, saving its state (partial results, memory contents and computer register contents) and loading the saved state of another program and transferring control to it. This "<a href="Context_switch" title="Context switch">context switch</a>" may be initiated at fixed time intervals (<a href="Pre-emptive_multitasking" class="mw-redirect" title="Pre-emptive multitasking">pre-emptive multitasking</a>), or the running program may be coded to signal to the supervisory software when it can be interrupted (<a href="Cooperative_multitasking" title="Cooperative multitasking">cooperative multitasking</a>).
</p><p>Multitasking does not require <a href="Parallel_computing" title="Parallel computing">parallel execution</a> of multiple tasks at exactly the same time; instead, it allows more than one task to advance over a given period of time.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Even on <a href="Multiprocessor" class="mw-redirect" title="Multiprocessor">multiprocessor</a> computers, multitasking allows many more tasks to be run than there are CPUs.
</p><p>Multitasking is a common feature of computer operating systems since at least the 1960s. It allows more efficient use of the computer hardware; when a program is waiting for some external event such as a user input or an <a href="Input/output" title="Input/output">input/output</a> transfer with a peripheral to complete, the central processor can still be used with another program. In a <a href="Time-sharing" title="Time-sharing">time-sharing</a> system, multiple human operators use the same processor as if it was dedicated to their use, while behind the scenes the computer is serving many users by multitasking their individual programs. In <a href="Multiprogramming" class="mw-redirect" title="Multiprogramming">multiprogramming</a> systems, a task runs until it must wait for an external event or until the operating system's <a href="Scheduling_(computing)" title="Scheduling (computing)">scheduler</a> forcibly swaps the running task out of the CPU. <a href="Real-time_computing" title="Real-time computing">Real-time</a> systems such as those designed to control industrial robots, require timely processing; a single processor might be shared between calculations of machine movement, communications, and user interface.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Often multitasking operating systems include measures to change the priority of individual tasks, so that important jobs receive more processor time than those considered less significant. Depending on the operating system, a task might be as large as an entire application program, or might be made up of smaller <a href="Thread_(computing)" title="Thread (computing)">threads</a> that carry out portions of the overall program.
</p><p>A processor intended for use with multitasking operating systems may include special hardware to securely support multiple tasks, such as <a href="Memory_protection" title="Memory protection">memory protection</a>, and <a href="Protection_ring" title="Protection ring">protection rings</a> that ensure the supervisory software cannot be damaged or subverted by user-mode program errors.
</p><p>The term "multitasking" has become an international term, as the same word is used in many other languages such as German, Italian, Dutch, Romanian, Czech, Danish and Norwegian.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Multiprogramming">Multiprogramming</h2></div>
<p>In the early days of computing, <a href="CPU_time" title="CPU time">CPU time</a> was expensive, and <a href="Peripheral" title="Peripheral">peripherals</a> were very slow. When the computer ran a program that needed access to a peripheral, the central processing unit (CPU) would have to stop executing program instructions while the peripheral processed the data. This was usually very inefficient. Multiprogramming is a computing technique that enables multiple programs to be concurrently loaded and executed into a computer's memory, allowing the CPU to switch between them swiftly. This optimizes CPU utilization by keeping it engaged with the execution of tasks, particularly useful when one program is waiting for I/O operations to complete.
</p><p>The <a href="Bull_Gamma_60" title="Bull Gamma 60">Bull Gamma 60</a>, initially designed in 1957 and first released in 1960, was the first computer designed with multiprogramming in mind. Its architecture featured a central memory and a Program Distributor feeding up to twenty-five autonomous processing units with code and data, and allowing concurrent operation of multiple clusters.
</p><p>Another such computer was the <a href="LEO_(computer)#Applications_and_successors" title="LEO (computer)">LEO III</a>, first released in 1961. During <a href="Batch_processing" title="Batch processing">batch processing</a>, several different programs were loaded in the computer memory, and the first one began to run. When the first program reached an instruction waiting for a peripheral, the context of this program was stored away, and the second program in memory was given a chance to run. The process continued until all programs finished running.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>Multiprogramming gives no guarantee that a program will run in a timely manner. Indeed, the first program may very well run for hours without needing access to a peripheral. As there were no users waiting at an interactive terminal, this was no problem: users handed in a deck of punched cards to an operator, and came back a few hours later for printed results. Multiprogramming greatly reduced wait times when multiple batches were being processed.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Cooperative_multitasking">Cooperative multitasking</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Cooperative_multitasking" title="Cooperative multitasking">Cooperative multitasking</a></div>
<p>Early multitasking systems used applications that voluntarily ceded time to one another. This approach, which was eventually supported by many computer <a href="Operating_system" title="Operating system">operating systems</a>, is known today as cooperative multitasking. Although it is now rarely used in larger systems except for specific applications such as <a href="CICS" title="CICS">CICS</a> or the <a href="JES2" class="mw-redirect" title="JES2">JES2</a> subsystem, cooperative multitasking was once the only scheduling scheme employed by <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> and <a href="Classic_Mac_OS" title="Classic Mac OS">classic Mac OS</a> to enable multiple applications to run simultaneously. Cooperative multitasking is still used today on <a href="RISC_OS" title="RISC OS">RISC OS</a> systems.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p><p>As a cooperatively multitasked system relies on each process regularly giving up time to other processes on the system, one poorly designed program can consume all of the CPU time for itself, either by performing extensive calculations or by <a href="Busy_wait" class="mw-redirect" title="Busy wait">busy waiting</a>; both would cause the whole system to <a href="Hang_(computing)" title="Hang (computing)">hang</a>. In a server environment, this is a hazard that makes the entire environment unacceptably fragile.
</p>
<div class="mw-heading mw-heading2"><h2 id="Preemptive_multitasking">Preemptive multitasking</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Preemption_(computing)#Preemptive_multitasking" title="Preemption (computing)">Preemption (computing) § Preemptive multitasking</a></div>
<p>Preemptive multitasking allows the computer system to more reliably guarantee to each process a regular "slice" of operating time. It also allows the system to deal rapidly with important external events like incoming data, which might require the immediate attention of one or another process. Operating systems were developed to take advantage of these hardware capabilities and run multiple processes preemptively. Preemptive multitasking was implemented in <a href="TOPS-10" title="TOPS-10">the PDP-6 Monitor</a> and <a href="Multics" title="Multics">Multics</a> in 1964, in <a href="OS/360_and_successors#MFT" title="OS/360 and successors">OS/360 MFT</a> in 1967, and in <a href="Unix" title="Unix">Unix</a> in 1969, and was available in <a href="PDP-8#Programming_facilities" title="PDP-8">some operating systems</a> for computers as small as DEC's PDP-8; it is a core feature of all <a href="Unix-like" title="Unix-like">Unix-like</a> operating systems, such as <a href="Linux" title="Linux">Linux</a>, <a href="Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a> and <a href="Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> with its <a href="Comparison_of_BSD_operating_systems" title="Comparison of BSD operating systems">derivatives</a>,<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> as well as modern versions of Windows.
</p><p>Possibly the earliest preemptive multitasking OS available to home users was <a href="Microware" title="Microware">Microware</a>'s <a href="OS-9" title="OS-9">OS-9</a>, available for computers based on the <a href="Motorola_6809" title="Motorola 6809">Motorola 6809</a> such as the <a href="TRS-80_Color_Computer_2" class="mw-redirect" title="TRS-80 Color Computer 2">TRS-80 Color Computer 2</a>,<sup id="cite_ref-rainbow198309_dynamicuno_8-0" class="reference"><a href="#cite_note-rainbow198309_dynamicuno-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> with the operating system supplied by Tandy as an upgrade for disk-equipped systems.<sup id="cite_ref-tandyrsc11_9-0" class="reference"><a href="#cite_note-tandyrsc11-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> <a href="Sinclair_QDOS" title="Sinclair QDOS">Sinclair QDOS</a> on the <a href="Sinclair_QL" title="Sinclair QL">Sinclair QL</a> followed in 1984, but it was not a big success. Commodore's <a href="Amiga" title="Amiga">Amiga</a> was released the following year, offering a combination of multitasking and multimedia capabilities. Microsoft made preemptive multitasking a core feature of their flagship operating system in the early 1990s when developing <a href="Windows_NT_3.1" title="Windows NT 3.1">Windows NT 3.1</a> and then <a href="Windows_95" title="Windows 95">Windows 95</a>. In 1988 Apple offered <a href="A/UX" title="A/UX">A/UX</a> as a <a href="UNIX_System_V" title="UNIX System V">UNIX System V</a>-based alternative to the <a href="Classic_Mac_OS" title="Classic Mac OS">Classic Mac OS</a>. In 2001 Apple switched to the <a href="NeXTSTEP" title="NeXTSTEP">NeXTSTEP</a>-influenced <a href="Mac_OS_X" class="mw-redirect" title="Mac OS X">Mac OS X</a>.
</p><p>A similar model is used in <a href="Windows_9x" title="Windows 9x">Windows 9x</a> and the <a href="Windows_NT" title="Windows NT">Windows NT family</a>, where native 32-bit applications are multitasked preemptively.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> 64-bit editions of Windows, both for the <a href="X86-64" title="X86-64">x86-64</a> and <a href="Itanium" title="Itanium">Itanium</a> architectures, no longer support legacy 16-bit applications, and thus provide preemptive multitasking for all supported applications.
</p>
<div class="mw-heading mw-heading2"><h2 id="Real_time">Real time</h2></div>
<p>Another reason for multitasking was in the design of <a href="Real-time_computing" title="Real-time computing">real-time computing</a> systems, where there are a number of possibly unrelated external activities needed to be controlled by a single processor system. In such systems a hierarchical interrupt system is coupled with process prioritization to ensure that key activities were given a greater share of available <a href="Process_time" class="mw-redirect" title="Process time">process time</a>.<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Multithreading">Multithreading</h2></div>
<p><a href="Thread_(computing)" title="Thread (computing)">Threads</a> were born from the idea that the most efficient way for cooperating processes to exchange data would be to share their entire memory space. Thus, threads are effectively processes that run in the same memory context and share other resources with their <a href="Parent_process" title="Parent process">parent processes</a>, such as open files. Threads are described as <i>lightweight processes</i> because switching between threads does not involve changing the memory context.<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>
</p><p>While threads are scheduled preemptively, some operating systems provide a variant to threads, named <i><a href="Fiber_(computer_science)" title="Fiber (computer science)">fibers</a></i>, that are scheduled cooperatively. On operating systems that do not provide fibers, an application may implement its own fibers using repeated calls to worker functions. Fibers are even more lightweight than threads, and somewhat easier to program with, although they tend to lose some or all of the benefits of threads on <a href="Multiprocessing" title="Multiprocessing">machines with multiple processors</a>.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p><p>Some systems directly support <a href="Multithreading_(computer_architecture)" title="Multithreading (computer architecture)">multithreading in hardware</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Memory_protection">Memory protection</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Memory_protection" title="Memory protection">Memory protection</a></div>
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<p>Essential to any multitasking system is to safely and effectively share access to system resources. Access to memory must be strictly managed to ensure that no process can inadvertently or deliberately read or write to memory locations outside the process's address space. This is done for the purpose of general system stability and data integrity, as well as data security.
</p><p>In general, memory access management is a responsibility of the operating system kernel, in combination with hardware mechanisms that provide supporting functionalities, such as a <a href="Memory_management_unit" title="Memory management unit">memory management unit</a> (MMU). If a process attempts to access a memory location outside its memory space, the MMU denies the request and signals the kernel to take appropriate actions; this usually results in forcibly terminating the offending process. Depending on the software and kernel design and the specific error in question, the user may receive an access violation error message such as "segmentation fault".
</p><p>In a well designed and correctly implemented multitasking system, a given process can never directly access memory that belongs to another process. An exception to this rule is in the case of shared memory; for example, in the <a href="UNIX_System_V" title="UNIX System V">System V</a> inter-process communication mechanism the kernel allocates memory to be mutually shared by multiple processes. Such features are often used by database management software such as PostgreSQL.
</p><p>Inadequate memory protection mechanisms, either due to flaws in their design or poor implementations, allow for security vulnerabilities that may be potentially exploited by malicious software.
</p>
<div class="mw-heading mw-heading2"><h2 id="Memory_swapping">Memory swapping</h2></div>
<p>Use of a <a href="Virtual_memory" title="Virtual memory">swap file</a> or swap partition is a way for the operating system to provide more memory than is physically available by keeping portions of the primary memory in <a href="Secondary_storage" class="mw-redirect" title="Secondary storage">secondary storage</a>. While multitasking and memory swapping are two completely unrelated techniques, they are very often used together, as swapping memory allows more tasks to be loaded at the same time. Typically, a multitasking system allows another process to run when the running process hits a point where it has to wait for some portion of memory to be reloaded from secondary storage.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Programming">Programming</h2></div>
<p>Over the years, multitasking systems have been refined. Modern operating systems generally include detailed mechanisms for prioritizing processes, while <a href="Symmetric_multiprocessing" title="Symmetric multiprocessing">symmetric multiprocessing</a> has introduced new complexities and capabilities.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Process_state" title="Process state">Process state</a></li>
<li><a href="Context_switch" title="Context switch">Task switching</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160407121734/https://blogs.oracle.com/yuanlin/entry/concurrency_vs_parallelism_concurrent_programming">"Concurrency vs Parallelism, Concurrent Programming vs Parallel Programming"</a>. Oracle. Archived from <a rel="nofollow" class="external text" href="https://blogs.oracle.com/yuanlin/entry/concurrency_vs_parallelism_concurrent_programming">the original</a> on April 7, 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">March 23,</span> 2016</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Anthony Ralston, Edwin D. Reilly (ed),<i>Encyclopedia of Computer Science Third Edition</i>, Van Nostrand Reinhold, 1993, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-442-27679-6</bdi>, articles "Multitasking" and "Multiprogramming"</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><a rel="nofollow" class="external text" href="http://settle.ddns.net/LeoMan/Vol4P1.htm"><i>MASTER PROGRAME AND PROGRAMME TRIALS SYSTEM PART 1 MASTER PROGRAMME SPECIFICATION</i></a>. February 1965. section 6 "PRIORITY CONTROL ROUTINES".</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFLithmee2019" class="citation web cs1">Lithmee (2019-05-20). <a rel="nofollow" class="external text" href="https://pediaa.com/what-is-the-difference-between-batch-processing-and-multiprogramming/">"What is the Difference Between Batch Processing and Multiprogramming"</a>. <i>Pediaa.Com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2020-04-14</span></span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.notesjam.com/2017/09/evolution-of-operating-system.html">"Evolution of Operating System"</a>. 2017-09-29<span class="reference-accessdate">. Retrieved <span class="nowrap">2020-04-14</span></span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text">
<cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.riscos.info/index.php/Preemptive_multitasking">"Preemptive multitasking"</a>. <i>riscos.info</i>. 2009-11-03<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-07-27</span></span>.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ibiblio.org/team/intro/unix/what.html">"UNIX, Part One"</a>. <i>The Digital Research Initiative</i>. ibiblio.org. 2002-01-30<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-01-09</span></span>.</cite></span>
</li>
<li id="cite_note-rainbow198309_dynamicuno-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-rainbow198309_dynamicuno_8-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDownard1983" class="citation magazine cs1">Downard, Dan (September 1983). <a rel="nofollow" class="external text" href="https://archive.org/details/198309Rainbow/page/236/mode/2up">"Dynamic Uno"</a>. <i>The Rainbow</i>. pp. <span class="nowrap">236–</span>240<span class="reference-accessdate">. Retrieved <span class="nowrap">9 May</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-tandyrsc11-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-tandyrsc11_9-0">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><a rel="nofollow" class="external text" href="https://archive.org/details/RSC-11_Computer_Catalog_1984_Radio_Shack_a/page/n52/mode/1up"><i>1984 TRS-80 Catalog</i></a>. Tandy Corporation. 1984. pp. <span class="nowrap">53–</span>54<span class="reference-accessdate">. Retrieved <span class="nowrap">14 May</span> 2024</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite id="CITEREFJoseph_Moran2006" class="citation magazine cs1">Joseph Moran (June 2006). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090125104811/http://www.smartcomputing.com/editorial/article.asp?article=articles%2F2005%2Fs1606%2F08s06%2F08s06.asp">"Windows 2000 &16-Bit Applications"</a>. <i><a href="Smart_Computing" class="mw-redirect" title="Smart Computing">Smart Computing</a></i>. Vol. 16, no. 6. pp. <span class="nowrap">32–</span>33. Archived from <a rel="nofollow" class="external text" href="http://www.smartcomputing.com:80/editorial/article.asp?article=articles%2F2005%2Fs1606%2F08s06%2F08s06.asp">the original</a> on January 25, 2009.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFLiuLayland1973" class="citation journal cs1">Liu, C. L.; Layland, James W. (1973-01-01). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F321738.321743">"Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment"</a>. <i>Journal of the ACM</i>. <b>20</b> (1): <span class="nowrap">46–</span>61. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F321738.321743">10.1145/321738.321743</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0004-5411">0004-5411</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:59896693">59896693</a>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFEduardo_CiliendoTakechika_Kunimasa2008" class="citation web cs1">Eduardo Ciliendo; Takechika Kunimasa (April 25, 2008). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20150226022205/http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf">"Linux Performance and Tuning Guidelines"</a> <span class="cs1-format">(PDF)</span>. <i>redbooks.ibm.com</i>. <a href="IBM" title="IBM">IBM</a>. p. 4. Archived from <a rel="nofollow" class="external text" href="http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf">the original</a> <span class="cs1-format">(PDF)</span> on February 26, 2015<span class="reference-accessdate">. Retrieved <span class="nowrap">March 1,</span> 2015</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20100218115342/http://www.linfo.org/context_switch.html">"Context Switch Definition"</a>. <i>linfo.org</i>. May 28, 2006. Archived from <a rel="nofollow" class="external text" href="http://www.linfo.org/context_switch.html">the original</a> on February 18, 2010<span class="reference-accessdate">. Retrieved <span class="nowrap">February 26,</span> 2015</span>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.tldp.org/FAQ/Threads-FAQ/Types.html">"What are threads (user/kernel)?"</a>. <i>tldp.org</i>. September 8, 1997<span class="reference-accessdate">. Retrieved <span class="nowrap">February 26,</span> 2015</span>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://csmoraitis.weebly.com/uploads/1/4/1/9/14190245/multitasking_-_different_methods.pdf">Multitasking different methods</a>
Accessed on February 19, 2019</span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://kb.iu.edu/d/aagb">"What is a swap file?"</a>. <i>kb.iu.edu</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-03-26</span></span>.</cite></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://cis2.oc.ctc.edu/oc_apps/Westlund/xbook/xbook.php?unit=04&proc=page&numb=5">"Operating Systems Architecture"</a>. <i>cis2.oc.ctc.edu</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-03-17</span></span>.</cite></span>
</li>
</ol></div></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Operating_systems310" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Operating_systems310" style="font-size:114%;margin:0 4em"><a href="Operating_system" title="Operating system">Operating systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Comparison_of_operating_systems" title="Comparison of operating systems">Comparison</a></li>
<li><a href="Forensic_software_engineering" title="Forensic software engineering">Forensic engineering</a></li>
<li><a href="History_of_operating_systems" title="History of operating systems">History</a></li>
<li><a href="List_of_operating_systems" title="List of operating systems">List</a></li>
<li><a href="Timeline_of_operating_systems" title="Timeline of operating systems">Timeline</a></li>
<li><a href="Usage_share_of_operating_systems" title="Usage share of operating systems">Usage share</a></li>
<li><a href="Comparison_of_user_features_of_operating_systems" title="Comparison of user features of operating systems">User features comparison</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Variants</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Disk_operating_system" title="Disk operating system">Disk operating system</a></li>
<li><a href="Distributed_operating_system" title="Distributed operating system">Distributed operating system</a></li>
<li><a href="Embedded_operating_system" title="Embedded operating system">Embedded operating system</a></li>
<li><a href="Hobbyist_operating_system" title="Hobbyist operating system">Hobbyist operating system</a></li>
<li><a href="Just_enough_operating_system" title="Just enough operating system">Just enough operating system</a></li>
<li><a href="Mobile_operating_system" title="Mobile operating system">Mobile operating system</a></li>
<li><a href="Network_operating_system" title="Network operating system">Network operating system</a></li>
<li><a href="Object-oriented_operating_system" title="Object-oriented operating system">Object-oriented operating system</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time operating system</a></li>
<li><a href="Supercomputer_operating_system" title="Supercomputer operating system">Supercomputer operating system</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Kernel_(operating_system)" title="Kernel (operating system)">Kernel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Computer_architecture" title="Computer architecture">Architectures</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Exokernel" title="Exokernel">Exokernel</a></li>
<li><a href="Hybrid_kernel" title="Hybrid kernel">Hybrid</a></li>
<li><a href="Microkernel" title="Microkernel">Microkernel</a></li>
<li><a href="Monolithic_kernel" title="Monolithic kernel">Monolithic</a></li>
<li><a href="Multikernel" title="Multikernel">Multikernel</a></li>
<li><a href="Vkernel" title="Vkernel">vkernel</a></li>
<li><a href="Rump_kernel" title="Rump kernel">Rump kernel</a></li>
<li><a href="Unikernel" title="Unikernel">Unikernel</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Device_driver" title="Device driver">Device driver</a></li>
<li><a href="Loadable_kernel_module" title="Loadable kernel module">Loadable kernel module</a></li>
<li><a href="User_space_and_kernel_space" title="User space and kernel space">User space and kernel space</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Process_management_(computing)" title="Process management (computing)">Process management</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em">
<ul><li> (<a href="Cooperative_multitasking" title="Cooperative multitasking">Cooperative</a>, <a href="Preemption_(computing)" title="Preemption (computing)">Preemptive</a>)</li>
<li><a href="Context_switch" title="Context switch">Context switch</a></li>
<li><a href="Interrupt" title="Interrupt">Interrupt</a></li>
<li><a href="Inter-process_communication" title="Inter-process communication">IPC</a></li>
<li><a href="Process_(computing)" title="Process (computing)">Process</a></li>
<li><a href="Process_control_block" title="Process control block">Process control block</a></li>
<li><a href="Real-time_operating_system" title="Real-time operating system">Real-time</a></li>
<li><a href="Thread_(computing)" title="Thread (computing)">Thread</a></li>
<li><a href="Time-sharing" title="Time-sharing">Time-sharing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em"><a href="Scheduling_(computing)" title="Scheduling (computing)">Scheduling<br>algorithms</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Fixed-priority_pre-emptive_scheduling" title="Fixed-priority pre-emptive scheduling">Fixed-priority preemptive</a></li>
<li><a href="Multilevel_feedback_queue" title="Multilevel feedback queue">Multilevel feedback queue</a></li>
<li><a href="Round-robin_scheduling" title="Round-robin scheduling">Round-robin</a></li>
<li><a href="Shortest_job_next" title="Shortest job next">Shortest job next</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Memory_management_(operating_systems)" title="Memory management (operating systems)">Memory management</a>,<br><a href="System_resource" title="System resource">resource</a> protection</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bus_error" title="Bus error">Bus error</a></li>
<li><a href="General_protection_fault" title="General protection fault">General protection fault</a></li>
<li><a href="Memory_paging" title="Memory paging">Memory paging</a></li>
<li><a href="Memory_protection" title="Memory protection">Memory protection</a></li>
<li><a href="Protection_ring" title="Protection ring">Protection ring</a></li>
<li><a href="Segmentation_fault" title="Segmentation fault">Segmentation fault</a></li>
<li><a href="Virtual_memory" title="Virtual memory">Virtual memory</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Non-volatile_memory" title="Non-volatile memory">Storage</a> access,<br><a href="File_system" title="File system">file systems</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Booting#BOOT-LOADER" title="Booting">Boot loader</a></li>
<li><a href="Defragmentation" title="Defragmentation">Defragmentation</a></li>
<li><a href="Device_file" title="Device file">Device file</a></li>
<li><a href="File_attribute" title="File attribute">File attribute</a></li>
<li><a href="Inode" title="Inode">Inode</a></li>
<li><a href="Journaling_file_system" title="Journaling file system">Journal</a></li>
<li><a href="Disk_partitioning" title="Disk partitioning">Partition</a></li>
<li><a href="Virtual_file_system" title="Virtual file system">Virtual file system</a></li>
<li><a href="Virtual_tape_library" title="Virtual tape library">Virtual tape library</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Supporting concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="API" title="API">API</a></li>
<li><a href="Computer_network" title="Computer network">Computer network</a></li>
<li><a href="Hardware_abstraction" title="Hardware abstraction">HAL</a></li>
<li><a href="Live_CD" title="Live CD">Live CD</a></li>
<li><a href="Live_USB" title="Live USB">Live USB</a></li>
<li><a href="Shell_(computing)" title="Shell (computing)">Shell</a>
<ul><li><a href="Command-line_interface" title="Command-line interface">CLI</a></li>
<li><a href="User_interface" title="User interface">User interface</a></li></ul></li>
<li><a href="Preboot_Execution_Environment" title="Preboot Execution Environment">PXE</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Parallel_computing346" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Parallel_computing346" style="font-size:114%;margin:0 4em"><a href="Parallel_computing" title="Parallel computing">Parallel computing</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Distributed_computing" title="Distributed computing">Distributed computing</a></li>
<li><a href="Parallel_computing" title="Parallel computing">Parallel computing</a></li>
<li><a href="Parallel_algorithm" title="Parallel algorithm">Parallel algorithm</a></li>
<li><a href="Massively_parallel" title="Massively parallel">Massively parallel</a></li>
<li><a href="Cloud_computing" title="Cloud computing">Cloud computing</a></li>
<li><a href="High-performance_computing" title="High-performance computing">High-performance computing</a></li>
<li><a href="Multiprocessing" title="Multiprocessing">Multiprocessing</a></li>
<li><a href="Manycore_processor" title="Manycore processor">Manycore processor</a></li>
<li><a href="General-purpose_computing_on_graphics_processing_units" title="General-purpose computing on graphics processing units">GPGPU</a></li>
<li><a href="Computer_network" title="Computer network">Computer network</a></li>
<li><a href="Systolic_array" title="Systolic array">Systolic array</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Levels</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Bit-level_parallelism" title="Bit-level parallelism">Bit</a></li>
<li><a href="Instruction-level_parallelism" title="Instruction-level parallelism">Instruction</a></li>
<li><a href="Task_parallelism" title="Task parallelism">Thread</a></li>
<li><a href="Task_parallelism" title="Task parallelism">Task</a></li>
<li><a href="Data_parallelism" title="Data parallelism">Data</a></li>
<li><a href="Memory-level_parallelism" title="Memory-level parallelism">Memory</a></li>
<li><a href="Loop-level_parallelism" title="Loop-level parallelism">Loop</a></li>
<li><a href="Pipeline_(computing)" title="Pipeline (computing)">Pipeline</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Multithreading_(computer_architecture)" title="Multithreading (computer architecture)">Multithreading</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Temporal_multithreading" title="Temporal multithreading">Temporal</a></li>
<li><a href="Simultaneous_multithreading" title="Simultaneous multithreading">Simultaneous</a> (SMT)</li>
<li><a href="Simultaneous_and_heterogeneous_multithreading" title="Simultaneous and heterogeneous multithreading">Simultaneous and heterogenous</a></li>
<li><a href="Speculative_multithreading" title="Speculative multithreading">Speculative</a> (SpMT)</li>
<li><a href="Preemption_(computing)" title="Preemption (computing)">Preemptive</a></li>
<li><a class="mw-selflink-fragment" href="#Cooperative_multitasking">Cooperative</a></li>
<li><a href="Bulldozer_(microarchitecture)#Bulldozer_core" title="Bulldozer (microarchitecture)">Clustered multi-thread</a> (CMT)</li>
<li><a href="Hardware_scout" title="Hardware scout">Hardware scout</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Theory</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Parallel_RAM" title="Parallel RAM">PRAM model</a></li>
<li><a href="Parallel_external_memory" title="Parallel external memory">PEM model</a></li>
<li><a href="Analysis_of_parallel_algorithms" title="Analysis of parallel algorithms">Analysis of parallel algorithms</a></li>
<li><a href="Amdahl's_law" title="Amdahl's law">Amdahl's law</a></li>
<li><a href="Gustafson's_law" title="Gustafson's law">Gustafson's law</a></li>
<li><a href="Cost_efficiency" title="Cost efficiency">Cost efficiency</a></li>
<li><a href="Karp%E2%80%93Flatt_metric" title="Karp–Flatt metric">Karp–Flatt metric</a></li>
<li><a href="Parallel_slowdown" title="Parallel slowdown">Slowdown</a></li>
<li><a href="Speedup" title="Speedup">Speedup</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Elements</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Process_(computing)" title="Process (computing)">Process</a></li>
<li><a href="Thread_(computing)" title="Thread (computing)">Thread</a></li>
<li><a href="Fiber_(computer_science)" title="Fiber (computer science)">Fiber</a></li>
<li><a href="Instruction_window" title="Instruction window">Instruction window</a></li>
<li><a href="Array_(data_structure)" title="Array (data structure)">Array</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Coordination</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Multiprocessing" title="Multiprocessing">Multiprocessing</a></li>
<li><a href="Memory_coherence" title="Memory coherence">Memory coherence</a></li>
<li><a href="Cache_coherence" title="Cache coherence">Cache coherence</a></li>
<li><a href="Cache_invalidation" title="Cache invalidation">Cache invalidation</a></li>
<li><a href="Barrier_(computer_science)" title="Barrier (computer science)">Barrier</a></li>
<li><a href="Synchronization_(computer_science)" title="Synchronization (computer science)">Synchronization</a></li>
<li><a href="Application_checkpointing" title="Application checkpointing">Application checkpointing</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Computer_programming" title="Computer programming">Programming</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Stream_processing" title="Stream processing">Stream processing</a></li>
<li><a href="Dataflow_programming" title="Dataflow programming">Dataflow programming</a></li>
<li><a href="Parallel_programming_model" title="Parallel programming model">Models</a>
<ul><li><a href="Implicit_parallelism" title="Implicit parallelism">Implicit parallelism</a></li>
<li><a href="Explicit_parallelism" title="Explicit parallelism">Explicit parallelism</a></li>
<li><a href="Concurrency_(computer_science)" title="Concurrency (computer science)">Concurrency</a></li></ul></li>
<li><a href="Non-blocking_algorithm" title="Non-blocking algorithm">Non-blocking algorithm</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Computer_hardware" title="Computer hardware">Hardware</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Flynn's_taxonomy" title="Flynn's taxonomy">Flynn's taxonomy</a>
<ul><li><a href="Single_instruction%2C_single_data" title="Single instruction, single data">SISD</a></li>
<li><a href="Single_instruction%2C_multiple_data" title="Single instruction, multiple data">SIMD</a>
<ul><li><a href="Single_instruction%2C_multiple_threads" title="Single instruction, multiple threads">Array processing</a> (SIMT)</li>
<li><a href="Flynn's_taxonomy#Pipelined_processor" title="Flynn's taxonomy">Pipelined processing</a></li>
<li><a href="Flynn's_taxonomy#Associative_processor" title="Flynn's taxonomy">Associative processing</a></li></ul></li>
<li><a href="Multiple_instruction%2C_single_data" title="Multiple instruction, single data">MISD</a></li>
<li><a href="Multiple_instruction%2C_multiple_data" title="Multiple instruction, multiple data">MIMD</a></li></ul></li>
<li><a href="Dataflow_architecture" title="Dataflow architecture">Dataflow architecture</a></li>
<li><a href="Instruction_pipelining" title="Instruction pipelining">Pipelined processor</a></li>
<li><a href="Superscalar_processor" title="Superscalar processor">Superscalar processor</a></li>
<li><a href="Vector_processor" title="Vector processor">Vector processor</a></li>
<li><a href="Multiprocessing" title="Multiprocessing">Multiprocessor</a>
<ul><li><a href="Symmetric_multiprocessing" title="Symmetric multiprocessing">symmetric</a></li>
<li><a href="Asymmetric_multiprocessing" title="Asymmetric multiprocessing">asymmetric</a></li></ul></li>
<li><a href="Semiconductor_memory" title="Semiconductor memory">Memory</a>
<ul><li><a href="Shared_memory" title="Shared memory">shared</a></li>
<li><a href="Distributed_memory" title="Distributed memory">distributed</a></li>
<li><a href="Distributed_shared_memory" title="Distributed shared memory">distributed shared</a></li>
<li><a href="Uniform_memory_access" title="Uniform memory access">UMA</a></li>
<li><a href="Non-uniform_memory_access" title="Non-uniform memory access">NUMA</a></li>
<li><a href="Cache-only_memory_architecture" title="Cache-only memory architecture">COMA</a></li></ul></li>
<li><a href="Massively_parallel" title="Massively parallel">Massively parallel</a> computer</li>
<li><a href="Computer_cluster" title="Computer cluster">Computer cluster</a>
<ul><li><a href="Beowulf_cluster" title="Beowulf cluster">Beowulf cluster</a></li></ul></li>
<li><a href="Grid_computing" title="Grid computing">Grid computer</a></li>
<li><a href="Hardware_acceleration" title="Hardware acceleration">Hardware acceleration</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="API" title="API">APIs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ateji_PX" title="Ateji PX">Ateji PX</a></li>
<li><a href="Boost_(C%2B%2B_libraries)" title="Boost (C++ libraries)">Boost</a></li>
<li><a href="Chapel_(programming_language)" title="Chapel (programming language)">Chapel</a></li>
<li><a href="HPX" title="HPX">HPX</a></li>
<li><a href="Charm%2B%2B" title="Charm++">Charm++</a></li>
<li><a href="Cilk" title="Cilk">Cilk</a></li>
<li><a href="Coarray_Fortran" title="Coarray Fortran">Coarray Fortran</a></li>
<li><a href="CUDA" title="CUDA">CUDA</a></li>
<li><a href="Dryad_(programming)" title="Dryad (programming)">Dryad</a></li>
<li><a href="C%2B%2B_AMP" title="C++ AMP">C++ AMP</a></li>
<li><a href="Global_Arrays" title="Global Arrays">Global Arrays</a></li>
<li><a href="GPUOpen" title="GPUOpen">GPUOpen</a></li>
<li><a href="Message_Passing_Interface" title="Message Passing Interface">MPI</a></li>
<li><a href="OpenMP" title="OpenMP">OpenMP</a></li>
<li><a href="OpenCL" title="OpenCL">OpenCL</a></li>
<li><a href="OpenHMPP" title="OpenHMPP">OpenHMPP</a></li>
<li><a href="OpenACC" title="OpenACC">OpenACC</a></li>
<li><a href="Parallel_Extensions" title="Parallel Extensions">Parallel Extensions</a></li>
<li><a href="Parallel_Virtual_Machine" title="Parallel Virtual Machine">PVM</a></li>
<li><a href="Pthreads" title="Pthreads">pthreads</a></li>
<li><a href="RaftLib" title="RaftLib">RaftLib</a></li>
<li><a href="ROCm" title="ROCm">ROCm</a></li>
<li><a href="Unified_Parallel_C" title="Unified Parallel C">UPC</a></li>
<li><a href="Threading_Building_Blocks" title="Threading Building Blocks">TBB</a></li>
<li><a href="ZPL_(programming_language)" class="mw-redirect" title="ZPL (programming language)">ZPL</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Problems</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Automatic_parallelization" title="Automatic parallelization">Automatic parallelization</a></li>
<li><a href="Deadlock_(computer_science)" title="Deadlock (computer science)">Deadlock</a></li>
<li><a href="Deterministic_algorithm" title="Deterministic algorithm">Deterministic algorithm</a></li>
<li><a href="Embarrassingly_parallel" title="Embarrassingly parallel">Embarrassingly parallel</a></li>
<li><a href="Parallel_slowdown" title="Parallel slowdown">Parallel slowdown</a></li>
<li><a href="Race_condition" title="Race condition">Race condition</a></li>
<li><a href="Software_lockout" title="Software lockout">Software lockout</a></li>
<li><a href="Scalability" title="Scalability">Scalability</a></li>
<li><a href="Starvation_(computer_science)" title="Starvation (computer science)">Starvation</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category: Parallel computing</li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1038841319">
/* start https://en.wikipedia.org/ */
.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox773" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Authority control databases: National </th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4133249-0">Germany</a></span></li><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="multiprogramování"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph903881&CON_LNG=ENG">Czech Republic</a></span></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007548971705171">Israel</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-03-28" href="https://en.wikipedia.org/wiki/?title=Computer_multitasking&oldid=1282758556">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>